package cn.tedu.mall.order.listener;

import cn.tedu.mall.pojo.order.dto.OrderAddCondition;
import org.apache.rocketmq.spring.core.RocketMQLocalTransactionState;

import java.util.HashMap;
import java.util.Map;

/**
 * 所有实现类,都要在这个注册器中注册数据
 * 真正调用的实现,是通过策略条件在这个注册器中区分的
 */
public class OrderAddListenerRegister implements OrderAddListenerExecutorInter{
    private static Map<String,OrderAddListenerExecutorInter>
    register=new HashMap<>();

    /**
     * 客户端调用的方法
     * @param orderAddCondition 有可能是seckillOrderAddDTO 有可能是orderAddDTO
     * @return
     */
    @Override
    public RocketMQLocalTransactionState execut(OrderAddCondition orderAddCondition) {
        String className=orderAddCondition.getClass().getName();
        return register.get(className).execut(orderAddCondition);
    }
    public static void registe(String key,OrderAddListenerExecutorInter orderAddListenerExecutorInter){
        //谁声明bean,谁来注册到注册器,key值,策略条件两个类的全路径名称
        register.put(key,orderAddListenerExecutorInter);
    }
}
